package com.soft.mainsite.module.web.cms.service;


import com.github.pagehelper.PageInfo;
import com.soft.mainsite.common.base.BaseService;
import com.soft.mainsite.module.web.cms.vo.SiteQueryParams;
import com.soft.mainsite.module.web.cms.vo.TCmsSiteVo;
import com.soft.mainsite.module.web.system.vo.UserVo;
import com.soft.mainsite.mybatis.model.TCmsSite;

import java.util.List;
import java.util.Map;

/**
 * Created by binary on 2017/5/15.
 * @author
 * @date
 */
public interface SiteService extends BaseService<TCmsSite,Integer> {

    /**
     * 保存
     * @param pojo
     * @return
     */
    @Override
    String save(TCmsSite pojo);

    /**
     * 更新
     * @param pojo
     * @return
     */
    @Override
    String update(TCmsSite pojo);

    /**
     * 保存
     * @param pojo
     * @return
     */
    String save(TCmsSiteVo pojo);

    /**
     * 更新
     * @param pojo
     * @return
     */
    String update(TCmsSiteVo pojo);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    TCmsSiteVo findVoById(Integer id);

    /**
     * 通过siteKey查询站点
     * @param key
     * @return
     */
    TCmsSite findBySiteKey(String key);

    /**
     * 切换站点
     * @param userVo
     * @param siteId
     * @return
     */
    String change(UserVo userVo, Integer siteId);

    /**
     * 通过域名查询站点
     * @param domain
     * @return
     */
    TCmsSite findByDomain(String domain);

    /**
     * 通过城市code查询站点信息
     * @param cityCode
     * @param siteId
     * @return
     */
    TCmsSite findByCityCode(Integer cityCode, Integer siteId);

    /**
     * 查询失败站点
     * @param siteIds
     * @param status
     * @return
     */
    List<TCmsSite> findSiteStaticByStatus(String[] siteIds, Integer status);

    /**
     * 根据站点ids查询静态化成功及失败站点
     * @param siteIds
     * @return
     */
    Map<String, Object> findSiteStatic(String[] siteIds);

    /**
     * 更新站点静态化状态
     * @param siteId
     * @param staticStatus
     */
    void updateStaticStatus(Integer siteId, boolean staticStatus);

    /**
     * 通过状态查询所有站点
     * @param status
     * @return
     */
    List<TCmsSite> findAllSiteStaticByStatus(Integer status);

    /**
     * 分页条件查询站点类别
     * @param pageNumber
     * @param pageSize
     * @param queryParams
     * @param userVo
     * @return
     */
    PageInfo<TCmsSiteVo> pageSiteVoListByConditions(Integer pageNumber, Integer pageSize, SiteQueryParams queryParams, UserVo userVo);

    /**
     * 批量添加
     * @param siteNum
     * @return
     */
    String saveMore(Integer siteNum);

    /**
     * 批量删除子站点（没有选择城市子站点）
     * @return
     */
    String deleteMore();

    /**
     * 初始化站点（根据城市创建所有站点）
     * @return
     */
    String initInputMore();
}
